package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)


// 文件操作
func main() {
	writeToFile()
}
// 将内容写入文件
func writeToFile(){
	//写入文件操作：
	//打开文件：
	file , err := os.OpenFile("C:/Users/11202/Desktop/hello.txt",os.O_RDWR | os.O_APPEND | os.O_CREATE,0666)
	if err != nil {//文件打开失败
		fmt.Printf("打开文件失败",err)
		return
	}
	//及时将文件关闭：
	defer file.Close()
	//写入文件操作：---》IO流---》缓冲输出流(带缓冲区)
	writer := bufio.NewWriter(file)
	for i := 0; i < 10;i++ {
		writer.WriteString("你好 韩仁通\n")
	}
	//流带缓冲区，刷新数据--->真正写入文件中：
	writer.Flush()
	s :=os.FileMode(0666).String()
	fmt.Println(s) // 可以看到对应的权限
}

// 一次性读取文件
func readFileAll(){
	bytes1, e := ioutil.ReadFile("C:/Users/11202/Desktop/test.txt")
	if e!= nil {
		fmt.Printf("读取文件有误 %v",e)
	}
	fmt.Printf("文件的内容为：%v",string(bytes1))
}
// 带缓冲区的读取文件
func openFileOperator(){
	file, e := os.Open("C:/Users/11202/Desktop/test.txt")
	if e != nil {
		fmt.Println("读取文件有错误",e)
	}
	defer file.Close()

	reader := bufio.NewReader(file)

	for  {
		//line, isPrefix, e1 := reader.ReadLine()// 按行读取
		line,e1 := reader.ReadString('\n')
		if e1 == io.EOF {//io.EOF 表示已经读取到文件的结尾
			break
		}
		fmt.Print(string(line))
		//fmt.Println(isPrefix)
	}

}